package com.thb.pay.system.controller;


import com.thb.pay.api.sys.SysConfigServiceApi;
import com.thb.pay.api.sys.vo.req.SysConfigPageReq;
import com.thb.pay.api.sys.vo.req.SysConfigReq;
import com.thb.pay.api.sys.vo.resp.SysConfigVo;
import com.thb.pay.core.utils.PageResult;
import com.thb.pay.system.entity.SysConfig;
import com.thb.pay.system.service.SysConfigService;
import com.xiaoleilu.hutool.bean.BeanUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * <p>
 * 系统-配置表 前端控制器
 * </p>
 *
 * @author lucky
 * @since 2019-07-21
 */
@RestController
public class SysConfigController implements SysConfigServiceApi {

    @Autowired
    private SysConfigService sysConfigService;

    @Override
    public PageResult<SysConfigVo> findPage(@RequestBody SysConfigPageReq pageReq) {
        return sysConfigService.findPage(pageReq);
    }

    @Override
    public SysConfigVo getById(@RequestParam("id") Long id) {
        SysConfig sysConfig = sysConfigService.selectById(id);
        if (sysConfig != null) {
            SysConfigVo sysConfigVo = new SysConfigVo();
            BeanUtil.copyProperties(sysConfig, sysConfigVo);
            return sysConfigVo;
        }
        return null;
    }

    @Override
    public List<SysConfigVo> findListByType(@RequestParam("type") String type) {
        return sysConfigService.findListByType(type);
    }

    @Override
    public SysConfigVo getByCode(@RequestParam("code") String code) {
        return sysConfigService.getByCode(code);
    }

    @Override
    public void updateAll(@RequestBody List<SysConfigReq> configReqList) {
        sysConfigService.updateAll(configReqList);
    }

    @Override
    public void save(@RequestBody SysConfigReq configReq) {
        sysConfigService.save(configReq);
    }

    @Override
    public void update(@RequestBody SysConfigReq configReq) {
        Assert.notNull(configReq, "config.info.not.null");
        SysConfig targetResult = new SysConfig();
        BeanUtils.copyProperties(configReq, targetResult);
        sysConfigService.updateById(targetResult);
    }
}
